package com.kjlink.widget.monitoring.xml;

import lombok.Getter;
import lombok.Setter;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import java.io.Serializable;

/**
 * 描述:
 *  最终上报的xml public 内用对应的模型
 * @author Vic.xu
 * @since 2025-08-04 9:50
 */
@Getter
@Setter
// // 使用字段访问
@XmlAccessorType(XmlAccessType.FIELD)
public class ReportContentXml implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 日期（格式：YYYYMMDDHH24MISS，必填）<br>
     * 说明: 压缩事件取周期内首次发生时间
     */
    @NotEmpty
    @XmlElement
    private String DATE;

    /**
     * 应用简称（必填）<br>
     * 说明: 标识业务系统简称，如"OrderService"
     */
    @NotEmpty
    @XmlElement
    private String APPSNAME;

    /**
     * 监控类别（必填）<br>
     * 取值:
     * - 01: 主机应用监控<br>
     * - 02: 开放平台应用监控<br>
     * - 03: 分行自行开发应用监控
     */
    @NotEmpty
    @XmlElement
    private String TYPE;

    /**
     * 交易代码（条件必填）<br>
     *交易代码是否可以使用上文自定义的业务场景代码
     *对交易监控时，交易代码为必输，资源代码需为空(不填null或空格)；对资源监控时；资源代码为必输，交易代码需为空(不填null或空格)。
     */
    @XmlElement
    private String TRANCODE;

    /**
     * 资源代码（条件必填）<br>
     *交易代码是否可以使用上文自定义的业务场景代码
     *对交易监控时，交易代码为必输，资源代码需为空(不填null或空格)；对资源监控时；资源代码为必输，交易代码需为空(不填null或空格)。
     */
    @XmlElement
    private String RESOURCECODE;

    /**
     * 错误代码（必填）<br>
     * 说明:
     * 是否可以使用程序代码异常种类
     * 对交易监控时，错误代码为必输，资源使用情况需为空(不填null或空格)；对资源监控时，资源使用情况为必输，错误代码需为空(不填null或空格)。
     * "资源使用情况"如上送率值，需连%（英文）一起上送，如50%
     */
    @NotEmpty
    @XmlElement
    private String EVENTCODE;

    /**
     * 资源使用情况（非必填）<br>
     * 说明:
     * - 格式: 数值+%，如"50%"<br>
     * - 仅在资源监控时需填写
     */
    @XmlElement
    private String RESOURCERATE;

    /**
     * 事件发生次数（必填）<br>
     * 说明:
     * - 未压缩时默认为1<br>
     * - 压缩事件需按实际次数填写
     */
    @NotNull
    @XmlElement
    private Integer EVENTSCOUNT;

    /**
     * 发生地点（必填）<br>
     * 说明:
     * - 主机应用填CICS ID，如"CICS001"<br>
     * - 开放平台填IP地址，如"192.168.1.1"
     */
    @NotEmpty
    @XmlElement
    private String OCCURPLACE;

    /**
     * 发生容器/实例（非必填）<br>
     * 说明: 单台设备多实例时填写编号，如"Instance-01"
     */
    @XmlElement
    private String OCCURINSTANCE;

    /**
     * 业务源应用（非必填）<br>
     * 说明: 业务链路起始应用ID，如"SRC001"
     */
    @XmlElement
    private String SOUCEAPPCODE;

    /**
     * 业务目标应用（非必填）<br>
     * 说明: 业务链路目标应用ID，如"DEST001"
     */
    @XmlElement
    private String TARGETAPPCODE;

    /**
     * 业务种类（非必填）<br>
     * 说明: 如"支付业务"、"账户管理"
     */
    @XmlElement
    private String BUSINESSTYPE;

    /**
     * 业务异常情况（非必填）<br>
     * 说明: 异常详细说明，如"余额不足"
     */
    @XmlElement
    private String EXCEPTION;

    // --- 以下为 字段好像都用不到---
    /**
     * 上送应用服务群组ID
     */
    @XmlElement
    private String SUBAPPID;

    /**
     * 业务源应用服务群组ID
     */
    @XmlElement
    private String SOURCESUBAPPID;

    /**
     * 业务目标应用服务群组ID
     */
    @XmlElement
    private String TARGETSUBAPPID;

    /**
     * 备用字段
     */
    @XmlElement
    private String BAKUP;

    /**
     * 监控对象（非必填）
     * 01、应用临界资源
     * 02、资金流
     * 03、信息流
     */
    @XmlElement
    private String OBJECT;


}